﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using Credinka.Ayni.SEA.EN;
using Credinka.Ayni.SEA.RN;
using Credinka.Ayni.GEN.UTL;

public partial class ProductoNuevo : System.Web.UI.Page
{
    private enDescripcion oenDescripcion;
    private rnDescripcion ornDescripcion;
    private enProducto oenProducto;
    private rnProducto ornProducto;
    private List<enProducto> loenProducto;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            string sFamilia = this.PreviousPage.sFamilia;
            string sProducto = this.PreviousPage.sProducto;
            string sIdProducto = this.PreviousPage.sIdProducto;

            ListarFamilia(sFamilia);
            ListarProductoFamilia(Int32.Parse(sFamilia), sProducto);
            ListarMoneda();
            ListarEstado();
            ListarAnoBase();
            ListarCondicionRenovacion();
            ListarFormaRenovacion();
            ListarModalidadPagoInteres();
            ListarFormaIngresoDinero();
            ListarFormaAbonoInteres();
            ListarGenero();
            if (sIdProducto != "")
            {
                ConsultarProductoPorId(Int32.Parse(sIdProducto));
            }
            
        }
    }

    private void ListarFamilia(string svalor)
    {
        oenDescripcion = new enDescripcion();
        ornDescripcion = new rnDescripcion();
        //ddlFamilia.DataSource = ornDescripcion.ListarFamilia(oenDescripcion);
        ddlFamilia.DataTextField = "Descripcion";
        ddlFamilia.DataValueField = "IdDescripcion";
        ddlFamilia.DataBind();
        ddlFamilia.Items.Insert(0, new ListItem("[SELECCIONE]", "0"));
        ddlFamilia.SelectedValue = svalor;
    }

    private void ListarProductoFamilia(int piCodigoFamilia, string svalor)
    {
        oenDescripcion = new enDescripcion();
        oenDescripcion.MontoInicial = piCodigoFamilia;
        ornDescripcion = new rnDescripcion();
        //ddlProducto.DataSource = ornDescripcion.ListarProductoFamilia(oenDescripcion);
        ddlProducto.DataTextField = "Descripcion";
        ddlProducto.DataValueField = "IdDescripcion";
        ddlProducto.DataBind();
        ddlProducto.Items.Insert(0, new ListItem("[SELECCIONE]", "0"));
        ddlProducto.SelectedValue = svalor;
    }

    private void ListarMoneda()
    {
        oenDescripcion = new enDescripcion();
        oenDescripcion.CodigoTabla = 3;
        ornDescripcion = new rnDescripcion();
        //ddlMoneda.DataSource = ornDescripcion.ListarElemento(oenDescripcion);
        ddlMoneda.DataTextField = "Descripcion";
        ddlMoneda.DataValueField = "IdDescripcion";
        ddlMoneda.DataBind();
        ddlMoneda.Items.Insert(0, new ListItem("[SELECCIONE]", "0"));
    }
    
    private void ListarEstado()
    {
        oenDescripcion = new enDescripcion();
        oenDescripcion.CodigoTabla = 5;
        ornDescripcion = new rnDescripcion();
        //ddlEstado.DataSource = ornDescripcion.ListarElemento(oenDescripcion);
        ddlEstado.DataTextField = "Descripcion";
        ddlEstado.DataValueField = "CodigoElemento";
        ddlEstado.DataBind();
        ddlEstado.Items.Insert(0, new ListItem("[SELECCIONE]", "0"));
    }

    private void ListarAnoBase()
    {
        oenDescripcion = new enDescripcion();
        oenDescripcion.CodigoTabla = 4;
        ornDescripcion = new rnDescripcion();
        //ddlAnoBase.DataSource = ornDescripcion.ListarElemento(oenDescripcion);
        ddlAnoBase.DataTextField = "Descripcion";
        ddlAnoBase.DataValueField = "IdDescripcion";
        ddlAnoBase.DataBind();
        ddlAnoBase.Items.Insert(0, new ListItem("[SELECCIONE]", "0"));
    }

    private void ListarCondicionRenovacion()
    {
        oenDescripcion = new enDescripcion();
        oenDescripcion.CodigoTabla = 8;
        ornDescripcion = new rnDescripcion();
        //ddlCondicionesRenov.DataSource = ornDescripcion.ListarElemento(oenDescripcion);
        ddlCondicionesRenov.DataTextField = "Descripcion";
        ddlCondicionesRenov.DataValueField = "IdDescripcion";
        ddlCondicionesRenov.DataBind();
        ddlCondicionesRenov.Items.Insert(0, new ListItem("[SELECCIONE]", "0"));
    }

    private void ListarFormaRenovacion()
    {
        oenDescripcion = new enDescripcion();
        oenDescripcion.CodigoTabla = 9;
        ornDescripcion = new rnDescripcion();
        //ddlFormaRenov.DataSource = ornDescripcion.ListarElemento(oenDescripcion);
        ddlFormaRenov.DataTextField = "Descripcion";
        ddlFormaRenov.DataValueField = "IdDescripcion";
        ddlFormaRenov.DataBind();
        ddlFormaRenov.Items.Insert(0, new ListItem("[SELECCIONE]", "0"));
    }

    private void ListarModalidadPagoInteres()
    {
        oenDescripcion = new enDescripcion();
        oenDescripcion.CodigoTabla = 9;
        ornDescripcion = new rnDescripcion();
        //ddlModalidadPagoInteres.DataSource = ornDescripcion.ListarElemento(oenDescripcion);
        ddlModalidadPagoInteres.DataTextField = "Descripcion";
        ddlModalidadPagoInteres.DataValueField = "IdDescripcion";
        ddlModalidadPagoInteres.DataBind();
        ddlModalidadPagoInteres.Items.Insert(0, new ListItem("[SELECCIONE]", "0"));
    }

    private void ListarFormaIngresoDinero()
    {
        oenDescripcion = new enDescripcion();
        oenDescripcion.CodigoTabla = 11;
        ornDescripcion = new rnDescripcion();
        
//        cblFormaIngresoDinero.DataSource = ornDescripcion.ListarElemento(oenDescripcion);
        cblFormaIngresoDinero.DataTextField = "Descripcion";
        cblFormaIngresoDinero.DataValueField = "IdDescripcion";
        cblFormaIngresoDinero.DataBind();
    }

    private void ListarFormaAbonoInteres()
    {
        oenDescripcion = new enDescripcion();
        oenDescripcion.CodigoTabla = 12;
        ornDescripcion = new rnDescripcion();
        //cblFormaAbonoInteres.DataSource = ornDescripcion.ListarElemento(oenDescripcion);
        cblFormaAbonoInteres.DataTextField = "Descripcion";
        cblFormaAbonoInteres.DataValueField = "IdDescripcion";
        cblFormaAbonoInteres.DataBind();
    }

    private void ListarGenero()
    {
        oenDescripcion = new enDescripcion();
        oenDescripcion.CodigoTabla = 13;
        ornDescripcion = new rnDescripcion();
        //cblGenero.DataSource = ornDescripcion.ListarElemento(oenDescripcion);
        cblGenero.DataTextField = "Descripcion";
        cblGenero.DataValueField = "IdDescripcion";
        cblGenero.DataBind();
    }

    protected void ddlFamilia_SelectedIndexChanged(object sender, EventArgs e)
    {
        ListarProductoFamilia(Int32.Parse(ddlFamilia.SelectedValue),"0");
    }

    protected void btnGuardar_Click(object sender, EventArgs e)
    {       
        string[] sFecha = hdfFecha.Value.Split('#');

        oenProducto = new enProducto();
        ornProducto = new rnProducto();
        oenProducto.CodigoFamilia = Int32.Parse(ddlFamilia.SelectedValue);
        oenProducto.CodigoProducto = Int32.Parse(ddlProducto.SelectedValue);
        oenProducto.CodigoSubProducto = 0;
        oenProducto.CodigoMoneda = Int32.Parse(ddlMoneda.SelectedValue);
        oenProducto.FechaVigenciaInicioComercial = DateTime.Parse(sFecha[0]);
        oenProducto.FechaVigenciaFinComercial = DateTime.Parse(sFecha[1]);
        oenProducto.FechaVigenciaInicioOperativa = DateTime.Parse(sFecha[2]);
        oenProducto.FechaVigenciaFinOperativa = DateTime.Parse(sFecha[3]);
        oenProducto.NombreProducto = txtSubProducto.Text.Trim();
        oenProducto.CodigoAnoBase = Int32.Parse(ddlAnoBase.SelectedValue);
        oenProducto.MontoMinimoAperturaPN = decimal.Parse(string.Format("0{0}",txtMinimoAperturaPN.Text.Trim()));
        oenProducto.MontoMinimoAperturaPJ = decimal.Parse(string.Format("0{0}",txtMinimoAperturaPJ.Text.Trim()));
        oenProducto.CancelacionAnticipada = bool.Parse(rblCancelacionAnticipada.SelectedValue);
        oenProducto.CobroITF = bool.Parse(rblCobroITF.SelectedValue);
        oenProducto.RangoEdadMinimo = short.Parse(string.Format("0{0}", txtRangoEdadMin.Text.Trim()));
        oenProducto.RangoEdadMaximo = short.Parse(string.Format("0{0}", txtRangoEdadMax.Text.Trim()));
        oenProducto.RangoEdadMinimo = short.Parse(txtRangoEdadMin.Text.Trim());
        oenProducto.RangoEdadMaximo = short.Parse(txtRangoEdadMax.Text.Trim());
        oenProducto.RangoEdadMinimo = short.Parse(txtRangoEdadMin.Text.Trim());
        oenProducto.RangoEdadMaximo = short.Parse(txtRangoEdadMax.Text.Trim());
        oenProducto.CodigoEstado = Int32.Parse(ddlEstado.SelectedValue);
        oenProducto.AudNombreUsuarioCreacion = "mangelino";
        oenProducto.AudIPCreacion = utlAuditoria.ObtenerDireccionIP();
        oenProducto.AudMACCreacion = utlAuditoria.ObtenerDireccionMAC();
        //Producto Caracterísitca
        List<DataTable> ldtProductoCaracteristica = new List<DataTable>();
        ldtProductoCaracteristica.Add(LlenarProductoCaracteristica(cblFormaIngresoDinero));
        ldtProductoCaracteristica.Add(LlenarProductoCaracteristica(cblFormaAbonoInteres));
        ldtProductoCaracteristica.Add(LlenarProductoCaracteristica(cblGenero));
        int n;
        n = ornProducto.Registrar(oenProducto,ldtProductoCaracteristica);
    }

    private void ConsultarProductoPorId(int piIdProducto)
    {
        oenProducto = new enProducto();
        ornProducto = new rnProducto();
        loenProducto = new List<enProducto>();
        oenProducto.IdProducto = Int32.Parse(this.PreviousPage.sIdProducto);
        loenProducto = ornProducto.ListarPorId(oenProducto);
        ddlFamilia.SelectedValue = loenProducto[0].CodigoFamilia.ToString();
        //ListarProductoFamilia(loenProducto[0].CodigoFamilia, loenProducto[0].CodigoProducto.ToString());
        //ddlProducto.SelectedValue = loenProducto[0].CodigoProducto.ToString();
        txtSubProducto.Text = loenProducto[0].NombreProducto;
        ddlMoneda.SelectedValue = loenProducto[0].CodigoMoneda.ToString();
        ddlEstado.SelectedValue = loenProducto[0].CodigoEstado.ToString();
        //Fechas
        txtMinimoAperturaPN.Text = string.Format(loenProducto[0].MontoMinimoAperturaPN.ToString());
        txtMinimoAperturaPJ.Text = string.Format(loenProducto[0].MontoMinimoAperturaPJ.ToString());
        rblRenovacionAut.SelectedValue = loenProducto[0].RenovacionAutomatica.ToString();
        //ddlCondicionesRenov.SelectedValue = loenProducto[0].
        //ddlFormaRenov.SelectedValue = loenProducto[0].
        //ddlModalidadPagoInteres.SelectedValue = loenProducto[0].CodigoModal
        //cblFormaIngresoDinero
        //cblFormaAbonoInteres
        rblCobroITF.SelectedValue = loenProducto[0].CobroITF.ToString();
        rblCancelacionAnticipada.SelectedValue = loenProducto[0].CancelacionAnticipada.ToString();
        ddlAnoBase.SelectedValue = loenProducto[0].CodigoAnoBase.ToString();
        //cblGenero
        txtRangoEdadMin.Text = loenProducto[0].RangoEdadMinimo.ToString();
        txtRangoEdadMax.Text = loenProducto[0].RangoEdadMaximo.ToString();
        //txtRangoPlazoMin.Text = loenProducto[0].
        //txtRangoPlazoMin.Text = loenProducto[0].
        //txtRangoPlazoMin.Text = loenProducto[0].
        //txtRangoPlazoMin.Text = loenProducto[0].
    }

    private DataTable LlenarProductoCaracteristica(CheckBoxList pcblCaracteristica)
    {
        DataTable dtProductoCaracteristica = new DataTable();
        dtProductoCaracteristica.Columns.Add("iCodigoCaracteristica", Type.GetType("System.Int32"));
        DataRow drProductoCaracteristica;
        foreach (ListItem liFila in pcblCaracteristica.Items)
        {
            if(liFila.Selected)
            {
                drProductoCaracteristica = dtProductoCaracteristica.NewRow();
                drProductoCaracteristica[0] = liFila.Value;
                dtProductoCaracteristica.Rows.Add(drProductoCaracteristica);
            }
        }
        return (dtProductoCaracteristica);
    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        ((Button)sender).Text =  ucFecha.ddlAno.SelectedValue;
    }
}